4つの主要な操作をサポートする二分探索木を実装する必要があります。
- 操作の数は $N$ であり、$1 \le N \le 2 \cdot 10^5$ です。
- ins k: 整数キー $k$ を二分探索木に挿入します。もし $k$ が既に存在する場合は、この操作は無効です。
- find k: キー $k$ を検索します。存在する場合は 'true'、そうでない場合は 'false' を出力します。
- succ k: $k$ の次なる要素($k$ より厳密に大きい最小のキー)を見つけます。存在しない場合は 'null' を出力します。
- pred k: $k$ の直前の要素($k$ より厳密に小さい最大のキー)を見つけます。存在しない場合は 'null' を出力します。
- 重要な前提条件: 次なる要素および直前の要素のクエリにおいて、キー $k$ は必ず木内に存在することが保証されています。